package com.yami.shop.service.utils;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;

/**
 * @author Administrator
 * @date 2021/5/8
 */
@Data
@ToString
public class WeChatTransactionData implements Serializable {
    private static final long serialVersionUID = -6013912925192530360L;

    /**
     * 直连商户申请的公众号或移动应用appid
     */
    private String appid;

    /**
     * 商户的商户号，由微信支付生成并下发
     */
    private String mchid;

    /**
     * 商户订单号
     */
    private String outTradeNo;

    /**
     * 微信支付订单号
     */
    private String transactionId;

    /**
     * 交易类型
     */
    private String tradeType;

    /**
     * 交易状态
     */
    private String tradeState;

    /**
     * 交易状态描述
     */
    private String tradeStateDesc;

    /**
     * 银行类型，采用字符串类型的银行标识。银行标识请参考
     */
    private String bankType;

    /**
     * 附加数据
     */
    private String attach;

    /**
     * 支付完成时间 YYYY-MM-DDTHH:mm:ss+TIMEZONE
     */
    private String successTime;

    /**
     * 支付者信息
     */
    private Payer payer;

    /**
     * 订单金额
     */
    private Amount amount;

    /**
     * 支付场景信息描述
     */
    private SceneInfo sceneInfo;

    /**
     * 优惠功能，享受优惠时返回该字段。
     */
    private List<PromotionDetail> promotionDetail;

    /**
     * 支付者信息
     */
    @Data
    public static class Payer {
        /**
         * 用户在直连商户appid下的唯一标识。
         */
        private String openid;
    }

    /**
     * 支付场景描述
     */
    @Data
    public static class SceneInfo {
        /**
         * 商户端设备号（门店号或收银设备ID）。
         */
        private String deviceId;
    }

    /**
     * 订单金额
     */
    @Data
    public static class Amount {
        /**
         * 订单总金额，单位为分。
         */
        private Integer total;
        /**
         * 用户支付金额，单位为分。
         */
        private Integer payerTotal;
        /**
         * CNY：人民币，境内商户号仅支持人民币。
         */
        private String currency;
        /**
         * 用户支付币种
         */
        private String payerCurrency;
    }
}
